/*
 * @Author: szx
 * @Date: 2021-11-24 10:35:07
 * @LastEditTime: 2021-11-24 10:56:37
 * @Description:
 * @FilePath: \leetcode\600-699\673\673.js
 */
/**
 * @param {number[]} nums
 * @return {number}
 */
//  dp[i] 以nums[i]为结尾的，严格比目前值小的长度
//  cnt[i] 以nums[i]为结尾的，比目前小的最长序列的个数
var findNumberOfLIS = function (nums) {
    const n = nums.length;
    let maxLen = 0,
        ans = 0;
    const dp = new Array(n).fill(1);
    const cnt = new Array(n).fill(1);
    for (let i = 0; i < n; i++) {
        for (let j = 0; j < i; j++) {
            if (nums[j] < nums[i]) {
                if (dp[j] + 1 > dp[i]) {
                    dp[i] = dp[j] + 1;
                    cnt[i] = cnt[j]; // 重置计数
                } else if (dp[j] + 1 === dp[i]) {
                    cnt[i] += cnt[j];
                }
            }
        }
        console.log(cnt);
        if (dp[i] > maxLen) {
            maxLen = dp[i];
            ans = cnt[i]; // 重置计数
        } else if (dp[i] === maxLen) {
            ans += cnt[i];
        }
    }
    return ans;
};
console.log(findNumberOfLIS([2,2,2,2,2]));
